/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

package jp.ize.ux.states;

import jp.ize.ux.UXObject;
import jp.ize.ux.UXPoint;
import jp.ize.ux.states.UXBasicState;
// {{{ enum UXLinearLayoutAlign {
/**
 * 始点から終点に向いている向きの時に、どちら側に子コンポーネントを寄せて配置するかを示す値です。
 */
enum UXLinearLayoutAlign {
	/** 左寄せ */
	LEFT;
	/** コンポーネントの中心線を線分に重ねます。*/
	CENTER;
	/** 右寄せ */
	RIGHT;   
}
// }}}
// {{{ enum UXLinearLayoutExtentAlign
/**
 * オブジェクトを詰めて配置する際に、どこに詰めるかを指定する値です。
 */
enum UXLinearLayoutExtentAlign
{
	/** 始点に詰めて配置されます。*/
	START;
	/** 線分の中心に詰めて配置されます。*/
	CENTER;
	/** 終点に詰めて配置されます。*/
	END;
}
// }}}
// {{{ enum UXLinearExtent
/**
 * オブジェクトの広げ方です。
 */
enum UXLinearExtent
{
	/**
	 * オブジェクトは重ならない程度に詰めて配置されます。
	 * 始点、中心、終点の3種類の寄せから詰め方を選べます。
	 */
	CLOSER( align : UXLinearLayoutExtentAlign );
	/** オブジェクトは線分上に均等に配置されます。*/
	EQUALLY;
}
// }}}
// {{{ class UXLinearState extends UXListState
/**
 * UXLinearStateクラス<br>
 * 線分に沿って並ぶ子コンポーネントを管理するクラスです。
 * 複数の子要素と始点(startp)と終点(endp)を持ちます。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class UXLinearState extends UXListState
{
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 */
	public function new( s : UXPoint, e : UXPoint, w : Float )
	{
		super();
		startp = s;
		endp = e;
		width = w;
	}
	// }}}
	// {{{ public var startp(default, default) : UXPoint
	/**
	 * レイアウトを始める始点です。
	 */
	public var startp(default, default) : UXPoint;
	// }}}
	// {{{ public var endp(default, default) : UXPoint
	/**
	 * レイアウトが終わる終点です。
	 */
	public var endp(default, default) : UXPoint;
	// }}}
	// {{{ public var width(default, default) : Float
	/**
	 * 始点と終点が定める線分を中心とした両側にレイアウトの幅を定義するものです。
	 * 子コンポーネントのAlignがLEFTかRIGHTの場合に、子コンポーネントの配置位置に影響を与えます。
	 */
	public var width(default, default) : Float;
	// }}}
	// {{{ public var align(default, default) : Align
	/**
	 * 子コンポーネントの揃え方です。デフォルトはCENTERです。
	 */
	public var align(default, default) : UXLinearLayoutAlign;
	// }}}
	// {{{ public var startMargin(default, default) : Float
	/**
	 * 始点に適用されるマージンです。子コンポーネントはこのマージンの分だけ線分の内側に配置されます。デフォルトは0です。
	 */
	public var startMargin(default, default) : Float;
	// }}}
	// {{{ public var endMargin(default, default) : Float
	/**
	 * 終点に適用されるマージンです。子コンポーネントはこのマージンの分だけ線分の内側に配置されます。デフォルトは0です。
	 */
	public var endMargin(default, default) : Float;
	// }}}
	// {{{ public var leftMargin(default, default) : Float
	/**
	 * 始点から終点に向いている向きの時に、左側のマージを設定できます。デフォルトは0です。
	 */
	public var leftMargin(default, default) : Float;
	// }}}
	// {{{ public var rightMargin(default, default) : Float
	/**
	 * 始点から終点に向いている向きの時に、右側のマージを設定できます。デフォルトは0です。
	 */
	public var rightMargin(default, default) : Float;
	// }}}
	// {{{ public var extent(default, default) : UXLinearExtent
	/**
	 * オブジェクトの広げ方を指定できます。デフォルトはEQUALLYです。
	 */
	public var extent(default, default) : UXLinearExtent;
	// }}}
}
// }}}
